import java.util.Scanner;

public abstract class Person{
    //父类成员变量
    private String name;
    private String email;
    private String address;

    public Person(String name, String email, String address){
        this.name = name;
        this.email = email;
        this.address = address;
    }
    public void setInfo(String inputn,String inpute ,String inputa) {
        name = inputn;
        email = inpute;
        address = inpute;
        
    }
    public String getName() {
        return name;
        
    }
    public String getEmail() {
        return email;
    }
    public String getAddress() {
        return address;
    }
    public abstract String getLoad();

    public int job(Person p){//非老师即学生。。。可不可以有其他的情况？比如我的返回类型是一个int，1代表学生0代表老师-1代表都不是？
        if(p instanceof Student)
            return 1;
        else if(p instanceof Teacher)
            return 0;
        else 
            return -1;
    }
    public String toString(){
        return "姓名:[" + name + "] 邮箱：["+ email + "] 地址：[" + address + "]";
    }
    //查询系统：通过名字查询
    public boolean nameSearch(String name) {
        return (name.equals(this.name));
    }
    

    /*
    //查询系统（已坑）-先判断传入的参数是属于哪个类的，对应到哪个类的查询系统-通过case语句，输入某个对比项来实现其他值的获取

    //简单说说为什么坑掉：
    
    1.首先我在主方法里的调用是很别捏的，比如用person[0]来调用，传入person[1]，那这里的传入的参数是person[1]的，this却是person[0]。
      那么问题来了，我在初始化的时候设定的是person[0]的值，那么这个查询至少要遍历我此刻拥有的[0][1]两个数组元素之后才敢断言我的查询信息能不能跟某个成员
      变量匹配。我这里索引号都没有办法匹配好，逻辑是整个不自洽的。
      ————如果要修改整个程序的话，可能要在每个case中都嵌套一个for循环。将整套数组遍历完了之后，如果还是找不到我的索引项，再输出“错误”
      类似于：
     case 1:
                System.out.println("通过姓名查询…………");
                for(i=0; i < arr.length; i++){
                    if(p.getName().equals(searchinfo)){
                        System.out.println("您的查询姓名为： " + name);
                        System.out.println(p);
                        return;
                    }
                }
                        System.out.println("信息错误");
            }
        先不谈这种改法到底能不能解决问题，起码它是自洽了“遍历”的这个逻辑了，好歹是个查询的方法了。只有与所有的数组元素进行比对后都找不到可以equal的对象，
        才能基本断言没有这个值。否则，我输入甲的名字，你在乙的档案表里找，找不到，断言没有甲，显然是不合理的。
    2.其次，在这种小项目中“名字”“地址”等属性应当都是独自拥有的，我不需要申明“这是一个老师的名字”，只要系统能在教务系统里检索到这串名字，就可以输出相应的
      档案，也就是说“老师”和“学生”的共有成员变量，也就是继承下来的父类变量，都是存在一个大的“人”集合中的。无需instanceof的判断，就可以进行比对。而对于子
      类各自所独有的成员变量，我们才需要判断调用它的实际传入参数到底是属于哪个类，再进行强制类型转换以访问其独有的成员变量。

    之所以把这个方法坑掉，首先我认为它不是最优、最快的，除了行数比较多，实现功能方面着实比较鸡肋。目前我对于数组的浅薄认识仅支持我写出一个简单如是的通讯
    录，但是上面说到的很多问题或许再更了解ArrayList()或者学习了其他对口方法后会更容易解决，所以我就不多花时间在这里琢磨一个鸡肋的东西了。

    我只能说是积累了一次惨痛而宝贵的实验失败经验积累吧！希望下次vs的魔法助我顺顺利利完成作业orz

    public void searchInfo(Person p,String searchinfo) {
        int sr = this.job(p);
        Scanner search = new Scanner(System.in);
        if(sr == 0){
            int n = search.nextInt();
            switch (n) {
                case 1:
                System.out.println("通过姓名查询…………");
                    if(p.getName().equals(searchinfo)){
                        System.out.println("您的查询姓名为： " + name);
                        System.out.println(p);
                    }
                    else{
                        System.out.println("信息错误");
                    }
                    break;
                case 2:
                System.out.println("通过邮箱查询…………");
                    if(p.getEmail().equals(searchinfo)){
                        System.out.println("您的查询邮箱为： " + email);
                        System.out.println(p);
                    }
                    else{
                        System.out.println("信息错误");
                    }
                    break;
                case 3:
                System.out.println("通过地址查询…………");
                if(p.getAddress().equals(searchinfo)){
                    System.out.println("您的查询地址为： " + address);
                    System.out.println(p);
                }
                else{
                    System.out.println("信息错误");
                }
                    break;
                case 4:
                System.out.println("通过职称查询…………");
                Teacher t =(Teacher) p;
                if(t.getLoad().equals(searchinfo)){
                    System.out.println("您的查询职称为： " + t.getLoad());
                    System.out.println(t);
                }
                else{
                    System.out.println("信息错误");
                }
                    break;
                default:
                    break;
            }
        }
        if(sr == 0){
            int n = search.nextInt();
            switch (n) {
                case 1:
                System.out.println("通过姓名查询…………");
                    if(p.getName().equals(searchinfo)){
                        System.out.println("您的查询姓名为： " + name);
                        System.out.println(p);
                    }
                    else{
                        System.out.println("信息错误");
                    }
                    break;
                case 2:
                System.out.println("通过邮箱查询…………");
                    if(p.getEmail().equals(searchinfo)){
                        System.out.println("您的查询邮箱为： " + email);
                        System.out.println(p);
                    }
                    else{
                        System.out.println("信息错误");
                    }
                    break;
                case 3:
                System.out.println("通过地址查询…………");
                if(p.getAddress().equals(searchinfo)){
                    System.out.println("您的查询地址为： " + address);
                    System.out.println(p);
                }
                else{
                    System.out.println("信息错误");
                }
                    break;
                case 4:
                System.out.println("通过学号查询…………");
                Student s =(Student) p;
                if(s.getLoad().equals(searchinfo)){
                    System.out.println("您的查询职称为： " + s.getLoad());
                    System.out.println(s);
                }
                else{
                    System.out.println("信息错误");
                }
                    break;
        }
    }}
        */

        
        
    
    }

